package cn.duyo.spring.beans.factory.support;

import cn.duyo.spring.beans.BeansException;
import cn.duyo.spring.core.io.Resource;
import cn.duyo.spring.core.io.ResourceLoader;

/**
 * bean定义读取器
 *
 * @author du
 */
public interface BeanDefinitionReader {

    //////////////////////////////// 工具 //////////////////////////////////
    /**
     * 工具1: bean定义注册器
     */
    BeanDefinitionRegistry getRegistry();

    /**
     * 工具2: 资源包装加载器
     */
    ResourceLoader getResourceLoader();

    ///////////////////////////////////////////////////////////////////////

    /**
     * 加载bean定义1: 通过一个资源
     */
    void loadBeanDefinitions(Resource resource) throws BeansException;

    /**
     * 加载bean定义2: 通过多个资源
     */
    void loadBeanDefinitions(Resource... resources) throws BeansException;

    /**
     * 加载bean定义3: 通过路径
     */
    void loadBeanDefinitions(String location) throws BeansException;

    /**
     * 加载bean定义4: 通过多个路径
     */
    void loadBeanDefinitions(String... locations) throws BeansException;
}
